package com.myth.date;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * jdk 8之前的日期时间的API测试
 * 1. System类中currentTimeMillis();
 * 2. java. util. Date和子类java. sql. Date
 * 3. SimpleDateFormat
 * 4. Calendar
 *
 *
 */
public class DateTimeTest1 {
    /**
     * SimpleDateFormat的使用: SimpleDateFormat 对日期Date类的格式化和解析
     *
     * 1.两个操作:
     *     1.1格式化:日期--->字符串
     *     1.2解析:格式化的逆过程，字符串---> 日期
     *
     */
    
    @Test
    public void testSimpleDateFormat() throws ParseException {
        //实例化
        SimpleDateFormat df = new SimpleDateFormat();

        //格式化:日期--->字符串
        Date date = new Date();
        System. out. println(date);

        String format = df.format(date);
        System. out. println(format);

        //解析:格式化的逆过程，字符串--->日期
        String str = "20-05-20 上午13:14";
        Date date1 = df.parse(str);
        System.out.println(date1);

        //**********按照指定的方式格式化和解析:调用带参的构造**************
        //格式化
        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(df1.format(new Date()));
        //解析:要求字符串必须是符合SimpleDateFormat识别的格.式(通过构造器参数体现)，
        //否则，抛异常
        System.out.println(df1.parse("2021-08-11 22:50:09"));


    }

    /**
     * 练习一:字符串"202e-09-08"转换为java.sql.Date
     *
     * 练习二:"三天打渔两天晒网”1990-01-01xXXX-xX-xx打渔?﹖晒网?
     *
     * 举例: 2020-09-e8 ?总天数
     *
     * 总天数% 5 == 1,2,3 ∶打渔
     * 总天数% 5 == 4,0 :晒网
     *
     * 总天数的计算?
     * 方式一:(date2.getTime() - date1.getTime())/ (1eee * 60 * 60 * 24) + 1
     *
     * 方式二:1990-e1-01 --> 2019-12-31 + 2026-01-01 -->2020-09-08
     */
    @Test
    public void testExer() throws ParseException {

        String birth = "2020-09-08";
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf1.parse(birth);
        java.sql.Date birthDate = new java.sql.Date(date.getTime());
    }

    /**
     * calendar日历类(抽象类)的使用
     *
     *
     *
     */


    @Test
    public void testcalendar( ) {
        //1.实例化
        //方式一:创建其子类(GregorianCalendar)的对象
        //方式二:调用其静态方法getInstance()
        Calendar calendar = Calendar.getInstance();
        //2.常用方法
        // get()
        int days = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(days);
        System.out.println(calendar.get(calendar.DAY_OF_YEAR));

        // set()
        calendar.set(calendar.DAY_OF_MONTH,22);
        days = calendar.get(calendar.DAY_OF_MONTH);
        System.out.println(days);

        // add( )
        calendar.add(calendar. DAY_OF_MONTH,3);
        days = calendar.get(calendar.DAY_OF_MONTH);
        System.out.println(days);

        // getTime( )
        Date date = calendar.getTime( );
        System.out.println(date);

        // setTime( )
        calendar.setTime(new Date());


    }

}
